/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 23735
 * Date: 2023-02-06
 * Time: 21:09
 */

import com.beans.User;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.ClassPathResource;

/**
 * 启动类
 */
public class App {
    public static void main(String[] args) {
        //  获取类的主要两种方法
        // 方法一: 获取类的上下文
        // 参数是 配置文件的名字
        ApplicationContext context=new ClassPathXmlApplicationContext("spring-config.xml");
        // 获取类
        // ① 只根据 id 获取
        User user1= (User) context.getBean("user");
        // ② 只根据 类 获取
        User user2= context.getBean(User.class);
        // ③ 根据 id 和 类获取 (推荐采用)
        User user3=context.getBean("user",User.class);
        // 使用类
        user1.hello();
        user2.hello();
        user3.hello();

        // 方法二: 获取 BeanFactory
        BeanFactory beanFactory=new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
        User user4=beanFactory.getBean("user",User.class);
        user4.hello();

        // 两种方法的区别
        // BeanFactory 是 Application 的父类
        // BeanFactory  懒加载 // Application 饿汉模式加载
    }
}
